-- 输出帮助信息
print("Usage: lua main.lua [options] [file]")
print("Options:")
print("  -h, --help          显示帮助信息")
print("  -v, --version       显示版本信息")

function getVersion()
    return "1.0.0"
end

function getAuthor()
    return "LuaScript"
end

print(getVersion())
print(getAuthor())

print(getAuthor(), getVersion());

a = {0}

for i = 1, 10 do
    a[i] = i
end

for v = 1, 10 do
    -- putchar(a[v])
    -- print('a' .. a[v] .. 'c')
end

print("dsad" .. #"dsad" .. "dsad");

-- file = io.open("test.txt", "w")
-- file:write("dsad")
-- file:close()

a = 'dsadsadsadsa'
print(a:len(), '     ', utf8.len(a))

a = {"a", 12, "b", 13}
-- for i, v in ipairs(a) do
--     print(i, v)
-- end

-- for k, v in pairs(a) do
--     print(k, v)
-- end
print(a['a'], a['b'])

a = {
    a = 1,
    b = 2,
    c = 3

}

print(a.a, a.b, a.c)

setmetatable(a, {
    __index = function(t, k)
        print("get:", k)
        return 0
    end
})

getmetatable(a).__index = function(t, k)
    print("get:", k)
    return 0
end

-- error("error")

pcall(function()
    error("error")
end)

-- xpcall(function()
--     error("error")
-- end, function(e)
--     print(e)
-- end)

-- 定义矩形类
Rectangle = {
    area = 0,
    length = 0,
    breadth = 0
}

-- 创建矩形对象的构造函数
function Rectangle:new(o, length, breadth)
    o = o or {} -- 如果未传入对象，创建一个新的空表
    setmetatable(o, self) -- 设置元表，使其继承 Rectangle 的方法
    self.__index = self -- 确保在访问时能找到方法和属性
    o.length = length or 0 -- 设置长度，默认为 0
    o.breadth = breadth or 0 -- 设置宽度，默认为 0
    o.area = o.length * o.breadth -- 计算面积
    return o
end

-- 打印矩形的面积
function Rectangle:printArea()
    print("area ", self.area)
end

Rectangle = Rectangle:new(nil, 4, 5)

for k, v in pairs(Rectangle) do
    print(k, v)
end

Rectangle:printArea()
